package com.gengzp.common.enums;

import lombok.Getter;

/**
 * @ClassName WebPageEnum
 * @Description 控制台页面枚举类
 * @Author gengzp
 * @Date 2025/10/24 15:22
 */
@Getter
public enum ConsolePageEnum {

    INDEX("index", "首页", "控制台"),

    // ============================ 用户管理 ============================
    USER_LIST("userList", "用户列表", "用户管理"),
    USER_DETAIL("userDetail", "用户详情", "用户管理"),

    // ============================ 角色管理 ============================
    ROLE_LIST("roleList", "角色列表", "角色管理"),
    ROLE_DETAIL("roleDetail", "角色详情", "角色管理"),

    // ============================ 服务治理 ============================
    SERVICE_GOVERNANCE_LIST("serviceGovernanceList", "服务治理列表", "服务治理管理"),
    SERVICE_GOVERNANCE_DETAIL("serviceGovernanceDetail", "服务治理详情", "服务治理管理"),

    // ============================ 定时任务 ============================
    SCHEDULED_TASK_LIST("scheduledTaskList", "定时任务列表", "定时任务管理"),
    SCHEDULED_TASK_DETAIL("scheduledTaskDetail", "定时任务详情", "定时任务管理"),

    // ============================ 消息队列 ============================
    MQ_TOPIC_LIST("mqTopicList", "消息主题 Topic 列表", "消息队列管理"),
    MQ_MESSAGE_LIST("mqMessageList", "消息列表", "消息队列管理"),

    // ============================ 系统日志 ============================
    OPERATION_LOG_LIST("operationLogList", "操作日志列表", "系统日志管理"),
    TRACE_LOG_LIST("traceLogList", "跟踪日志列表", "系统日志管理"),

    // ============================ 个人设置 ============================
    PERSONAL_SETTING("personalSetting", "个人设置", "控制台"),

    ;

    /**
     * 页面编码
     */
    private final String code;

    /**
     * 页面名称
     */
    private final String name;

    /**
     * 所属模块
     */
    private final String module;

    ConsolePageEnum(String code, String name, String module) {
        this.code = code;
        this.name = name;
        this.module = module;
    }

    /**
     * 根据编码获取枚举对象
     *
     * @param code 编码
     * @return 枚举对象
     */
    public static ConsolePageEnum getByCode(String code) {
        for (ConsolePageEnum value : values()) {
            if (value.code.equals(code)) {
                return value;
            }
        }
        return null;
    }

}
